SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO


CREATE PROCEDURE [dbo].[LIQSuplementoNoBonificable] 
@Agente INT, 
@Servicio INT,
@Plaza INT,
@retorno DECIMAL(18,4) OUTPUT,
@idLiquidacion INT,
@DiasALiquidar INT,
@DiasDelPeriodo INT,
@Desde DATETIME,
@Hasta DATETIME
AS 

SET NOCOUNT ON

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-- REGISTRO DE ACTUALIZACIONES
-- 18/11/2005 - Se agregaron parametros @Desde y @Hasta para manejo de Fechas en Titulares y Suplentes
-- 09/07/2006 - Los parametros se obtienen de la funcion fnObtenerValorDeParametro con la fecha que corresponda.
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

DECLARE @Afiliacion INT
DECLARE @Organizacion INT
DECLARE @SuplementoNoBonif DECIMAL(18,4), @SuplementoNoBonifProporcional DECIMAL(18,4)
DECLARE @horas INT
DECLARE @regimensalarial INT
DECLARE @situacionrevista INT
DECLARE @NroError INT
DECLARE @SubOrganizacion INT
DECLARE @SumaSuplementoHoras DECIMAL(18,4)
DECLARE @Cargo INT
DECLARE @Puntos DECIMAL(18,4)
DECLARE @TopeSuplemento DECIMAL(18,4)
DECLARE @CabeceraDeLiquidacion INT

SELECT @Afiliacion = idAfiliacion FROM tb_Afiliaciones WHERE idAgente = @Agente
SELECT @horas= horas,  @SubOrganizacion = SubOrganizacion FROM tb_Plazas WHERE idPlaza = @Plaza
SELECT @Organizacion = ubicacionOrig, @SituacionRevista = SituacionRevista, @Cargo = CargoSalarial FROM tb_ServiciosAgentes WHERE idservicioAgente =  @Servicio
SELECT @CabeceraDeLiquidacion = IdCabeceraLiquidacion FROM tb_Liquidaciones WHERE IdLiquidacion = @IdLiquidacion

-- Lo que viene acumulando por Regimen Salarial Horas el docente.
SELECT @SumaSuplementoHoras = SUM(montohaberes) FROM tb_RegistroDeLiquidaciones RL, tb_CargosSalariales C, tb_ServiciosAgentes S, tb_Liquidaciones
	WHERE Liquidacion = @idLiquidacion  AND IdLiquidacion = Liquidacion AND RL.Agente = @Agente And Concepto = 5  And Servicio = idServicioAgente And idCargo = S.CargoSalarial And C.RegimenSalarial = 13 AND IdCabeceraLiquidacion = @CabeceraDeLiquidacion

--SELECT @TopeSuplemento = CONVERT(DECIMAL(18,4),Valor1) FROM tb_Parametros WHERE Parametro = 'ValorTopeSuplementoNoBonificable'
SELECT @TopeSuplemento = CONVERT(DECIMAL(18,4), dbo.fnObtenerValorDeParametro ('ValorTopeSuplementoNoBonificable', @Hasta))

SELECT @regimensalarial = regimensalarial, @Puntos = CASE WHEN Puntos > 100 THEN 100 ELSE Puntos END  FROM tb_CargosSalariales WHERE idCargo = @Cargo

IF @regimensalarial = 12
	SELECT @SuplementoNoBonif = @TopeSuplemento * @Puntos / 100
ELSE
	SELECT @SuplementoNoBonif = @TopeSuplemento * @Puntos / 100 * @Horas

SELECT @DiasALiquidar = MontoHaberes FROM tb_RegistroDeLiquidaciones WHERE Concepto = 29  And Servicio = @Servicio And Liquidacion = @idLiquidacion

IF @SumaSuplementoHoras IS NULL
	SELECT @SumaSuplementoHoras = 0

IF @SuplementoNoBonif IS NULL
	SELECT @SuplementoNoBonif = 0

IF (@SumaSuplementoHoras + @SuplementoNoBonif) > @TopeSuplemento And @RegimenSalarial = 13
	SELECT @SuplementoNoBonif = @TopeSuplemento - @SumaSuplementoHoras

If (SELECT OrganizacionLiquidadora FROM tb_SubOrganizaciones WHERE idSubOrganizacion = @SubOrganizacion) Is Not Null
	SELECT @Organizacion = OrganizacionLiquidadora FROM tb_SubOrganizaciones WHERE idSubOrganizacion = @SubOrganizacion

SELECT @SuplementoNoBonifProporcional = (@DiasALiquidar * @SuplementoNoBonif) /  @DiasDelPeriodo 

--Agregado 09-05-2006 - para Suplemento Negativo por mas dias trabajados  
IF @SuplementoNoBonifProporcional<0
    SELECT @SuplementoNoBonifProporcional=0
--

If @DiasALiquidar > 0 
BEGIN
	INSERT INTO tb_RegistroDeLiquidaciones (AfectadosPorAjuste, Afiliacion, Agente, Ajuste, Cantidad, Cargosalarial, Concepto, Descripcion, DescuentoExterno, Desde, Dias, Embargo, Hasta, Horas, LegajoSalarial, Liquidacion, MontoDescuento, MontoHaberes, Organizacion, Reclamado, Servicio, SituacionRevista, SubOrganizacion)
		VALUES (null, @Afiliacion, @Agente, null, 1, null, 5, null, null, null, null, null, null, @horas, 0, @idLiquidacion, 0, @SuplementoNoBonifProporcional, @Organizacion, null, @Servicio, @SituacionRevista, @SubOrganizacion)
END
ELSE
	INSERT INTO tb_RegistroDeLiquidaciones (AfectadosPorAjuste, Afiliacion, Agente, Ajuste, Cantidad, Cargosalarial, Concepto, Descripcion, DescuentoExterno, Desde, Dias, Embargo, Hasta, Horas, LegajoSalarial, Liquidacion, MontoDescuento, MontoHaberes, Organizacion, Reclamado, Servicio, SituacionRevista, SubOrganizacion)
		VALUES (null, @Afiliacion, @Agente, null, 1, null, 5, null, null, null, null, null, null, @horas, 0, @idLiquidacion, 0, 0, @Organizacion, null, @Servicio, @SituacionRevista, @SubOrganizacion)

SELECT @NroError = @@error

IF @NroError <> 0
BEGIN
	INSERT INTO tb_ErroresLiquidacion (Agente, Concepto, Diagnostico, Fecha, Liquidacion, Organizacion, Servicio, CabeceraDeLiquidacion, NumeroDeError) VALUES
	(@Agente, 5, CONVERT(varchar,@NroError), GETDATE(), @idLiquidacion, @Organizacion, @Servicio, @CabeceraDeLiquidacion, @NroError)
END
GO
